package com.projles.ttd;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.projles.ttd.util.Jogador;
import com.projles.ttd.util.Player;

public class GerenciaJogadoresActivity extends Activity implements OnClickListener {

	private List<Jogador> jogadores;
	private RadioGroup groupBox;           // pode parecer estranho, mas nao existe groupbox
	private Button btSalvar;
	private Button btCancelar;
	private Button btNovoJogador;
	
	Player player;
	
	private List<CheckBox> checkBoxs = new ArrayList<CheckBox>();
	
	@SuppressWarnings("unchecked")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gerenciar_jogadores);
        
        player = Player.getPlayer(this);
        
        Bundle params = getIntent().getExtras();
    	jogadores = (ArrayList<Jogador>) params.get("jogadores");

    	
    	groupBox = (RadioGroup) findViewById(R.id.groupbox_gerencia_jogadores);
    	groupBox.setMinimumWidth(ViewGroup.LayoutParams.MATCH_PARENT);
    	
    	btSalvar = (Button) findViewById(R.id.bt_salvar_gerencia);
    	btSalvar.setOnClickListener(this);
    	
    	btCancelar = (Button) findViewById(R.id.bt_cancelar_gerencia);
    	btCancelar.setOnClickListener(this);
    	
    	btNovoJogador = (Button) findViewById(R.id.bt_novo_jogador);
    	btNovoJogador.setOnClickListener(this);
	}
	

	@Override
	protected void onStart() {
		super.onStart();
		
		carregarCheckboxJogadores();
	}


	@Override
	public void onClick(View v) {
		player.click();
		switch (v.getId()) {
		case R.id.bt_salvar_gerencia:
			salvarModificacoes();
			break;

		case R.id.bt_cancelar_gerencia:
			finish();
			break;
			
		case R.id.bt_novo_jogador:
			inserirNovoJogador();
			break;	
			
		default:
			break;
		}
		
	}
	
	
	private void inserirNovoJogador() {
		Intent i = new Intent(this, NovoJogadorActivity.class);
		i.putExtra("jogadores", (Serializable) jogadores);
		
		startActivityForResult(i, 0);
	}

	
	@SuppressWarnings("unchecked")
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		
		if (data != null) {
			Bundle params = data.getExtras();
			
			jogadores = (ArrayList<Jogador>) params.get("listaAtualizada");
			salvarModificacoes();
		}
	}
	
	
	private void salvarModificacoes() {
		
		if (removeJogadoresAtuais()) {     // jogadores que permanecem no jogo (checked)
			Intent i = this.getIntent();
			i.putExtra("listaAtualizada", (Serializable) jogadores);
			this.setResult(RESULT_OK, i);
			
			toast(getResources().getString(R.string.aviso_salvo));
			finish();
		}		
		
	}

	private boolean removeJogadoresAtuais() {

		List<Jogador> paraRemover = new ArrayList<Jogador>();
		
		
		for (int i = 0; i < checkBoxs.size(); i++) {
			
			if (!checkBoxs.get(i).isChecked()) {
				paraRemover.add(jogadores.get(i));
			}
		}

		
		if (paraRemover.size() == jogadores.size()) {
			toast(getResources().getString(R.string.erro_excluir_tudo));
			return false;
		}
		
		
		for (Jogador remover : paraRemover) {
			jogadores.remove(remover);
		}
		
		return true;
	}
	
	

	private void carregarCheckboxJogadores() {

		groupBox.removeAllViews();
		
		for(Jogador jog : jogadores) {
			
			CheckBox umJogadorCheck = new CheckBox(this);
			umJogadorCheck.setText(jog.getNome());
			umJogadorCheck.setChecked(true);
			umJogadorCheck.setTextColor(R.color.preto);
			umJogadorCheck.setBackgroundResource(R.drawable.barrabackground);
			umJogadorCheck.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
			umJogadorCheck.setTextColor(R.color.preto);
			
			checkBoxs.add(umJogadorCheck);
			
			groupBox.addView(umJogadorCheck);
			
			ImageView imgDivisor = new ImageView(this);
			imgDivisor.setImageDrawable(getResources().getDrawable(R.drawable.divisor));
			
			groupBox.addView(imgDivisor);
			
		}
		
	}
	
	private void toast(String texto) {
    	Toast.makeText(this, texto, Toast.LENGTH_LONG).show();
    }

	
}








